<?php 

/**
* 水印类
*/
class Water
{
	public $waterImg='2.jpg';//水印图片
	public $pos = '3';//放置位置
	public $pct = '80';//设置透明度

	public function __construct(){}

	public function water($file){
		$bgimg = $this->imageSec($file);//打开背景图片
		$waterimg = $this->imageSec($this->waterImg);//打开水印图片
		$pos=$this->getPos($bgimg,$waterimg);//判断水印位置
		$waterimgInfo = getimagesize($this->waterImg);//获取水印图片资源
		// 根据图片类型，判断函数类型
		if ($waterimgInfo[2]==3) {
			// png图片使用imagecopy
			imagecopy($bgimg, $waterimg, $pos[0], $pos[1], 0, 0, imagesx($waterimg), imagesy($waterimg));
		}
		else //jpeg和gif使用imagecopymerge
		{
			imagecopymerge($bgimg, $waterimg, $pos[0], $pos[1], 0, 0, imagesx($waterimg), imagesy($waterimg), $this->pct);
		}
		$bgimageInfo = getimagesize($file);//获取背景图片资源
		$fun = str_replace('/', '', $bgimageInfo['mime']);//判断图片输出使用的函数

		return $fun($bgimg,$file);//处理后的图片以原文件名保存
	}
	// ~~~~~~~~~~~打开上传图片~~~~~~~~
	private function imageSec($file){

		$info = getimagesize($file);//获取图片资--返回数组
		$stype = explode('/', $info['mime']);//拆分字符串--返回数组
		$fun ='imagecreatefrom'.$stype[1];//根据图片类型，判断函数类型

		return $fun($file);//打开图片
	}

	// ~~~~~~~~~~~~~~~~~~~~~·判断水印位置~~~~~~~~~~~~~~~

	private function getPos($bgimg,$logo){
		// 获取背景图片和水印图片大小
		$bgimg_x = imagesx($bgimg);
		$bgimg_y = imagesy($bgimg);
		$logo_x = imagesx($logo);
		$logo_y = imagesy($logo);

		$x=$y=20;//设置默认位置

		// 判断位置
		switch($this->pos)
		{
			case'1': $x=$y=20;//默认值
				break;
			case'2': $x = ($bgimg_x-$logo_x)/2;
				break;
			case'3': $x = $bgimg_x-$logo_x-20;
				break;
			case'4': $y = ($bgimg_y-$logo_y)/2;
				break;
			case'5':$x = ($bgimg_x-$logo_x)/2;
					$y = ($bgimg_y-$logo_y)/2;
				break;
			case'6':$x = $bgimg_x-$logo_x-20;
					$y = ($bgimg_y-$logo_y)/2;
				break;
			case'7':$y = $bgimg_y-$logo_y-20;
				break;
			case'8':$x = ($bgimg_x-$logo_x)/2;
					$y = $bgimg_y-$logo_y-20;
				break;
			default:
					$x = $bgimg_x-$logo_x-20;
					$y = $bgimg_y-$logo_y-20;
		}

		return array($x,$y);

	}
}





 ?>